package groland2.GROLANDControleur;
import Entity.Etat;
import Entity.Land;
import Entity.Landien;
import Entity.MaitreDuJeu;
import Session.EntrepriseRemote;
import Session.LandRemote;
import Session.LandienRemote;
import Session.MaitreDuJeuRemote;
import java.util.Vector;


import groland2.GROLANDConstantes.GROLANDConstantes;
import javax.naming.InitialContext;
import javax.servlet.http.HttpServletRequest;
public class GROLANDControleurMaitreDuJeu
{
    

    
    private MaitreDuJeuRemote mjr;
    private LandienRemote lr;
    private LandRemote r;
    private EntrepriseRemote entRemote;
    
    public GROLANDControleurMaitreDuJeu()
    {
        try
        {
            InitialContext ctx = new InitialContext();
            lr = (LandienRemote) ctx.lookup("LANDIEN2");
            mjr = (MaitreDuJeuRemote) ctx.lookup("MJRemote2");;
            r = (LandRemote) ctx.lookup("LandRemote2");
            entRemote = (EntrepriseRemote) ctx.lookup("EntrepriseRemote2");
        }
        catch (Exception ex)
        {
            System.err.println("erreur dans le lookup");
            ex.printStackTrace();
        }
    }
    
    public MaitreDuJeu ajouterMaitreDuJeu(HttpServletRequest request)
    {
        MaitreDuJeu m = new MaitreDuJeu(request.getParameter("nom"));
        mjr.persist(m);
        request.getSession().setAttribute("Maitre",m);
        return m;
    }

//Cette fonction ajoute les landien dans le land !
    public void fixerImmigration(Land leLand, int volume)
    {

        for (int i = 0 ; i< volume ; i++)
        {
            Landien l = new Landien();
            //l.setIdLandien(nbLandien);
            l.setBudget(GROLANDConstantes.BUDGET_LANDIEN_IMMIGRE);
            l.setNom("");
            //r.ajouterLandien(leLand.getId(),l);
        }
        embaucheFonctionnaire();
    }
    
    
    
    public void embaucheFonctionnaire()
    {
        
        GROLANDControleurLand cl = new GROLANDControleurLand();
        Land leLand = cl.getLeLand();
        GROLANDControleurEntreprise ce = new GROLANDControleurEntreprise();
        Etat e = ce.getLEtat();
        int nbFonc = e.getSesLandiens().size();
        int nbLandiens = leLand.getLesLandiens().size();
        int nbFoncRequis = ((int)(nbLandiens*0.2))-nbFonc;
        for (Landien l : leLand.getLesLandiens())
        {
            if(l.getEnt()==null)
            {
                if (nbFoncRequis>0)
                {
                    entRemote.ajouterLandien(e.getId(),l,e.getClass().getName());
                    
                    nbFoncRequis--;
                }
            }
        }    
    }
    public void fixeChomeurs(Etat e)
    {
        GROLANDControleurLand cl = new GROLANDControleurLand();
        Entity.Land leland = cl.getLeLand();
        
        for (Landien l : leland.getLesLandiens())
        {
            if (l.getEnt()==null)
            {
                entRemote.ajouterChomeur(e.getId(),l,e.getClass().getName());
                //l.setEnt(e);
            }
        }
        
    }
    public MaitreDuJeu getLeMaitre()
    {
        Vector<MaitreDuJeu> vm =(Vector) mjr.readAll();
        return vm.get(0);
    }
}
